/**
 * window.localStorage 浏览器永久缓存
 * @method set 设置永久缓存
 * @method get 获取永久缓存
 * @method remove 移除永久缓存
 * @method clear 移除全部永久缓存
 */
const _Futuret = 'futuret'
export const Local = {
    // 查看 v2.4.3版本更新日志
    setKey(key: string) {
        // @ts-ignore
        return `${_Futuret}:${key}`;
    },
    // 设置永久缓存
    set<T>(key: string, val: T) {
        window.localStorage.setItem(Local.setKey(key), JSON.stringify(val));
    },
    // 获取永久缓存
    get(key: string) {
        let json = <string>window.localStorage.getItem(Local.setKey(key));
        return JSON.parse(json);
    },
    // 移除永久缓存
    remove(key: string) {
        window.localStorage.removeItem(Local.setKey(key));
    },
    // 移除全部永久缓存
    clear() {
        window.localStorage.clear();
    },
};

/**
 * window.sessionStorage 浏览器临时缓存
 * @method set 设置临时缓存
 * @method get 获取临时缓存
 * @method remove 移除临时缓存
 * @method clear 移除全部临时缓存
 */
export const Session = {
    // 设置临时缓存
    set<T = any>(key: string, val: T) {
        if (key === 'token') return
        try {
            window.sessionStorage.setItem(Local.setKey(key), JSON.stringify(val));
        } catch (error) {
            console.log(error);
        }
    },
    // 获取临时缓存
    get(key: string) {
        if (key === 'token') return
        let json = <string>window.sessionStorage.getItem(Local.setKey(key));
        return JSON.parse(json);
    },
    // 移除临时缓存
    remove(key: string) {
        if (key === 'token') return
        window.sessionStorage.removeItem(Local.setKey(key));
    },
    // 移除全部临时缓存
    clear() {
        window.sessionStorage.clear();
    },
};


//设置
export const setCookie = (key: string, value: string, expire: number) => {
    const d = new Date();
    d.setDate(d.getDate() + expire);
    document.cookie = `${key}=${value};expires=${d.toUTCString()}`;
};

//读取
export const getCookie = (key: string) => {
    const cookieStr = decodeURI(document.cookie);
    const arr = cookieStr.split("; ");
    let cookieValue = "";
    for (let i = 0; i < arr.length; i++) {
        const temp = arr[i].split("=");
        if (temp[0] === key) {
            cookieValue = temp[1];
            break;
        }
    }
    return cookieValue;
};
//删除
export const delCookie = (key: string) => {
    document.cookie = `${encodeURIComponent(key)}=;expires=${new Date()}`;
};
